home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir37 / pcmenu89.zip / PCMENU.DOC < prev    next >
Text File  |  1989-03-11  |  30KB  |  736 lines

  1. Docs for PCMENU - Personal Computer Menu System - Sat  03-11-1989
  2. Copyright (c) 1989, Bob Trevithick and Rick Kiss
  3.  
  4.  
  5. ------------------PERSONAL COMPUTER MENU SYSTEM------------------
  6.  
  7.  
  8. OVERVIEW
  9. ========
  10.  
  11. This is a menu for people who don't want lots of bells and whistles, and who
  12. need something small, fast, and very easy to use and modify.  PCMENU can run
  13. any and all applications on your computer, with or without password protection,
  14. and steals NO memory (and very little disk space) from your applications.  It
  15. requires a 'true' PC/AT/PS2 compatible system.  THE FULL SOURCE CODE IS NOW
  16. AVAILABLE (see bottom of this file for details).
  17.  
  18. To set up the system, you will create a simple ASCII text file which contains
  19. the menu choices to be displayed to the user, and all of the batch instructions
  20. needed to execute each choice.  Then you'll type "PCMENU" to start the menu
  21. system.  If the file you create (or want to use) is named something other than
  22. "DEFAULT.PCM", then you'll follow the "PCMENU" command with the name of the
  23. file.  That's all there is to it.
  24.  
  25. One immediate advantage is that the systems under your control can now be
  26. purged of all those trivial little batch files that are such a nightmare to
  27. keep track of.  Each computer can have ONE easy to read and understand menu
  28. text file - or, optionally, a number of logically grouped functions in a
  29. handful of these text files (which will be loaded as sub-menus).  This can
  30. result in significant disk space savings, as well, given the large cluster size
  31. of many drives.
  32.  
  33.  
  34.  
  35. INITIAL SETUP
  36. =============
  37.  
  38. This is an extremely easy system to set up.  All you need to do is copy the
  39. distributed files to the directory of your choice, edit the DEFAULT.PCM file,
  40. and you're set to go.  If the directory you picked is in your path, and you use
  41. the MAKEMENU command described below, you will be able to start the menu from
  42. anywhere in the system.  I just install it in the \UTILS directory of the
  43. machines I work with, which is in the path and which includes all of the things
  44. I use routinely.
  45.  
  46. If you are using a network, there are special notes which you should read under
  47. 'NETWORK SUPPORT and NOTES', below.
  48.  
  49. If you're using an environment such as DESQVIEW or WINDOWS, or have a CGA which
  50. displays 'snow' with direct video access, see the notes below on forcing the
  51. system to 'USE ONLY LEGAL BIOS VIDEO CALLS'.
  52.  
  53. NOTE that although the executable program file is PCMS.COM, you will start the
  54. menu by running the PCMENU.BAT batch file which calls PCMS and then processes
  55. it's errorlevel return code in the standard way for menus such as this.
  56. Starting the menu by executing PCMS directly will cause the menu to display
  57. normally, but none of your selections will actually be executed.  A basic
  58. PCMENU.BAT file is included, but you will want to run the MAKEMENU program (or
  59. edit the file yourself) to create one which is customized for your machine.
  60. There is a message in the supplied PCMENU.BAT to remind you to do this.
  61.  
  62. MAKEMENU.COM is a small program which will create a slightly optimized version
  63. of PCMENU.BAT for you, checking the DOS version to see if the '@echo off'
  64. command is supported, and inserting the drive and directory change commands in
  65. the proper places.  Simply move to the drive and directory where you'll be
  66. installing the menu, then issue the command:
  67.  
  68.         MAKEMENU
  69.  
  70. If a file of the name "PCMENU.BAT" already exists in the logged directory,
  71. you'll be warned and asked whether to proceed.
  72.  
  73.  
  74. Once the system is installed, the only files needed to run it will be PCMS.COM,
  75. PCMENU.BAT, and whatever menu text file(s) you created (presumably DEFAULT.PCM
  76. will be one of them.)  All other distributed files can be deleted, as they are
  77. not used by the menu system.
  78.  
  79.  
  80.  
  81. CREATING THE MENU FILE(S)
  82. =========================
  83.  
  84. The text (menu) file containing the names and commands is easy to create. Any
  85. text editor capable of creating standard 7-bit ASCII text files can be used.
  86. Selecting the name "DEFAULT.PCM" for your main (or only) menu file will allow
  87. the menu, as noted above, to be started with just the "PCMENU" command.
  88.  
  89. Any entry (with a few exceptions, below) which starts in the first column is an
  90. item NAME - that is, it's what the user will see as one of the selection
  91. choices.  A name can be up to 21 characters long.  Any text which begins in any
  92. other column (indented by a space or tab) is a COMMAND, and is associated with
  93. the last NAME above it.  These can be any valid batch file instruction, and
  94. each can be up to 127 characters long.  You can have as many commands as you
  95. want for any given item name.
  96.  
  97. Here's an example of a couple of typical entries:
  98.  
  99. --------------------------------
  100. Run WordStar
  101.         d:
  102.         cd\ws
  103.         ws
  104.  
  105. dBase III Plus
  106.         cd\db
  107.         dbase
  108. --------------------------------
  109.  
  110. There will be only two items displayed when the menu above is run.  The rest of
  111. the lines (the indented ones) will be written to a temporary batch file if
  112. their parent item name is chosen.  Neither of the items above will return to
  113. the menu when completed (see below for that).
  114.  
  115. Note that you may separate items in your file with blank lines, or insert
  116. comments by preceeding them with a semicolon in column one, and that ANY valid
  117. batch file command can be used (including branching to labels).
  118.  
  119. The program will look for the menu file DEFAULT.PCM unless you specify another
  120. name on the command line (note the %1 parameter in PCMENU.BAT, which allows the
  121. PCMENU command to load any text file you want).  A couple of sample menu files
  122. are included, but they don't do anything significant.  The batch file which is
  123. created and executed when an item is selected is normally called PCM_EXEC.BAT,
  124. but can also be named via an environment variable for network users (see below
  125. under 'NETWORK SUPPORT and NOTES'.)
  126.  
  127. While a menu is being displayed, the cursor keys move the highlite bar.
  128. Pressing <Enter> will execute the highlited selection.  Pressing <Esc> will
  129. exit the menu.
  130.  
  131.  
  132. ERROR MESSAGES
  133. ==============
  134. The errors most likely to occur are those reported by PCMENU.BAT, and include
  135. errors reading and writing files, and having too many menu items in a given
  136. menu text file.  The first problem is usually due to mis-spelling a menu file
  137. name on the command line, or having forgotten to run MAKEMENU to customize your
  138. PCMENU.BAT file.  The second is likely due to a disk-full condition, but will
  139. also occur if you set PCM_EXEC.BAT (or the file named in the environment
  140. variable PCM, described below) to read-only attribute.  The last problem occurs
  141. when you attempt to list more than 66 items in a single menu text file.  By
  142. this we mean 66 NAMES which are displayed to the user.  You can have ANY number
  143. of COMMANDS listed under each NAME (I've tested it with files containing 1300
  144. command lines for a single item.)  If you need more than 66 items, simply chain
  145. to another menu file (described below.)
  146.  
  147.  
  148. That's all you need to know to get started.  Read on when you're ready for some
  149. simple but handy options.
  150.  
  151.  
  152.  
  153. ---OPTIONS, BELLS, WHISTLES:
  154.  
  155. AUTOMATIC RETURN TO MENU WHEN SELECTED ITEM CONCLUDES
  156. =====================================================
  157. The first 'bell' (or is it a 'whistle'?) will cause an automatic return to the
  158. menu after an item has finished executing.  Using just a '/' character as the
  159. last command for an item will cause the batch file to be created with the
  160. necessary return commands added at the end.  You can think of this as a way of
  161. telling PCMENU to "do whatever you have to do to get the menu running again
  162. after this item finishes executing."  For example, if you're currently logged
  163. to the E:\UTILS directory, you invoked the menu by typing "PCMENU MENU1" to use
  164. the MENU1 text file, and you selected an item which looks like this:
  165.  
  166. ----------------------------
  167. TEST ITEM
  168.         c:
  169.         cd\finance
  170.         dbase finmenu
  171.         /
  172. ----------------------------
  173.  
  174. the batch file which would be created would contain the following commands:
  175.  
  176. ----------------------------
  177. c:
  178. cd\finance
  179. dbase finmenu
  180. E:
  181. cd\UTILS
  182. pcmenu MENU1
  183. ----------------------------
  184.         
  185. NOTE that this option will only work if you start the system from a batch file
  186. named PCMENU.BAT, as the program has no knowledge of the command line prior to
  187. it's own invocation.
  188.  
  189.  
  190. PASSWORDS
  191. =========
  192. Another option is that of including a password with any item.  You do this by
  193. following the item name with a comma and the password.  For example:
  194.  
  195. ----------------------------
  196. Exit to DOS,password
  197. ----------------------------
  198.  
  199. Note that no space was included surrounding the comma.  If you wanted to get
  200. tricky, you might require the user to press the space bar twice before entering
  201. the password:
  202.  
  203. ----------------------------
  204. Exit to Dos,  password
  205. ----------------------------
  206.  
  207. Passwords can be up to 21 characters long (the same max length as an item
  208. name).  They can also be a phrase with embedded white space as long as the max
  209. length is not exceeded.  Case is not significant.
  210.  
  211.  
  212. DEFAULT PASSWORDS
  213. =================
  214. A related option allows setting one or more default passwords, which will
  215. protect the menu items subsequently defined in the text file.  This is done by
  216. placing a '.p=' in the far left column, immediately followed by the password.
  217. Items which have been entered with a comma and their own password will still be
  218. protected by that explicitly defined word, and items which are followed by only
  219. a comma will NOT be protected by any word (i.e., they are then exempt from the
  220. current default password).  A lone '.p=', with no word specified, will turn off
  221. default password protection for subsequent items.
  222.  
  223. For example, examine the following text file fragment:
  224.  
  225. --------------------------------------
  226. .p=aardvark
  227. Item One
  228.         d:
  229.         cd\item1
  230.         item1
  231.         /
  232. Item Two
  233.         cd\item2
  234.         item2
  235.         /
  236. Item Three,password3
  237.         cd\item3
  238.         item3
  239.         /
  240. Item Four
  241.         cd\item4
  242.         item4
  243.         /
  244. .p=hello world
  245. Item Five
  246.         cd\item5
  247.         item5
  248.         /
  249. Item Six,
  250.         cd\item6
  251.         item6
  252.         /
  253. Item Seven
  254.         cd\item7
  255.         item7
  256.         /
  257. .p=
  258. Item Eight
  259.         cd\item8
  260.         item8
  261.         /
  262. Item Nine
  263.         cd\item9
  264.         item9
  265.         /
  266. --------------------------------------
  267.  
  268. The first two items above would be protected by the work "aardvark", but the
  269. third item would have it's own password set to "password3".  The fourth item
  270. would use the current default of "aardvark" again, but then a new default
  271. password is set with the ".p=hello world" statement.  Items number 5 and 7 are
  272. protected by this new phrase, but item number 6 is exempt because of the
  273. trailing comma.  The '.p=' all by itself prior to the eighth item turns off the
  274. default password feature, so the remaining items (8 and 9) have NO password
  275. protection at all.
  276.  
  277.  
  278. ADMINISTRATOR PASSWORD 
  279. ====================== 
  280. Yet another password option allows setting an 'administrator' password, which
  281. can be used whenever the program requests a password.  This is done by putting
  282. '.a=' in the far left column, and immediately followed by the password.  For
  283. example:
  284.  
  285. -------------------------------------
  286. .a=my password
  287.  
  288. Item One,tiger
  289.    commands...
  290. -------------------------------------
  291.  
  292. This will cause the phrase "my password" to be accepted in addition to any
  293. other password which might be defined for a given item.  In this case, both 'my
  294. password' and 'tiger' will allow access to item one.  It's handy for people who
  295. have to maintain multiple machines - and who don't want to memorize eighty or
  296. ninety routinely changing passwords.
  297.  
  298.  
  299. DISABLE ESCAPE KEY
  300. ==================
  301. Another security related option involves the ability to turn off the <Esc>ape
  302. key as a means of exit.  Including '.e=0' in the first column will accomplish
  303. this.  For example:
  304.  
  305. --------------------------------
  306. .e=0
  307.  
  308. Run WordStar,bob
  309.         d:
  310.         cd\ws
  311.         ws
  312.         /
  313.  
  314. Exit to System,sys
  315.  
  316. dBase III Plus,norm
  317.         cd\db
  318.         dbase
  319.         /
  320. --------------------------------
  321.  
  322. Note that you should provide some other means of exit if you turn off the
  323. Escape key.  The 'Exit to System' option above does this by not defining any
  324. commands to be executed.  As long as the user knows the "sys" password, this
  325. item will allow exit to DOS.
  326.  
  327.  
  328. LOAD ANOTHER MENU TEXT FILE
  329. ===========================
  330. There is now a way to load another menu text file directly to the display,
  331. which provides a much faster method of chaining between multiple menus.  If a
  332. command consists of a '<' character immediately followed by a filespec, the
  333. file specified will be loaded just as if it's name had been specified on the
  334. command line.  For example:
  335.  
  336. --------------------------------
  337. UTILITY MENU
  338.     <utility.pcm
  339. --------------------------------
  340.  
  341. This will load the file "utility.pcm", and the items defined in that file will
  342. immediately be displayed for selection.  Full pathnames are supported.
  343.  
  344. The old system of simply using commands to restart the menu with the filespec
  345. named on the command line can still be used if you prefer.
  346.  
  347.  
  348. SETTING A MENU TITLE
  349. ====================
  350. You can optionally have a short title (21 chars max, same as item name and
  351. password) displayed at the top of the screen, which can be handy if you're
  352. using multiple menus.  Here's how you would set the title of your utilities
  353. menu:
  354.  
  355. --------------------------------
  356. .t=UTILITIES MENU
  357. --------------------------------
  358.  
  359.  
  360. TIMED SCREEN PROTECTION
  361. =======================
  362. Three minutes (by default) of no keyboard activity will result in a screen save
  363. routine being invoked.  The screen will clear, and a small message saying 'Hit
  364. any key for menu' will move slowly down the screen.  Users report liking this
  365. kind of message, as they tend otherwise to assume the machine is dead or the
  366. monitor turned down.  The next keystroke will restore the menu display.
  367.  
  368. You can set the Screen-protect delay by including '.s=' followed immediately by
  369. the number of seconds delay you want.  Using 0, or any value less than 5, will
  370. disable the screen protect feature entirely.  For example, the value 300 will
  371. set the delay to 5 minutes (300 seconds), as shown below:
  372.  
  373. --------------------------------
  374. .s=300
  375. --------------------------------
  376.  
  377. As an aside, this screen protection is very important for the old monochrome
  378. monitors, which tended to 'burn in' a stationary image.  I'm not sure whether
  379. the newer color monitors need this, but it can't hurt...
  380.  
  381.  
  382. USE ONLY LEGAL BIOS VIDEO CALLS
  383. ===============================
  384. By default, the system writes directly to video ram for all screen output. If
  385. your system doesn't permit this, or if you're running under an environment
  386. where this is inconvenient, you can force the system to use only legal BIOS
  387. calls by including '.b=1' in the menu text files.  This is an option you should
  388. only use if you have to, as it will slow down the display (most noteably on
  389. slower machines).  If would be worth using this option if, for example, you're
  390. running DesQview or Windows - which would have to routinely de-window the
  391. environment otherwise.  This will also solve 'snow' problems if you have any
  392. old CGA adaptors in use.
  393.  
  394.  
  395. SINGLE KEY SELECTION
  396. ====================
  397. While the menu is being displayed, the highlite bar is normally moved with the
  398. cursor control keys.  You can also move directly to an item by pressing the
  399. character key which corresponds to the first letter of the item name.  If there
  400. are multiples, pressing the same key will move to the next item beginning with
  401. that character.
  402.  
  403.  
  404. NETWORK SUPPORT and NOTES
  405. =========================
  406.  
  407. Unique output files for networks
  408. --------------------------------
  409. The batch file created when a selection is made is normally "PCM_EXEC.BAT". If
  410. you want multiple users to be able to each write to their own files, you can
  411. set the DOS environment to include a variable "PCM" which will control the
  412. primary name of this file (the '.bat' extent will be added for you - don't
  413. include this yourself.)  Each user's autoexec can set this variable on bootup.
  414. Note that all users on the system can share the "PCMENU.BAT" file, and the
  415. various menu text files in a read-only mode (see below for more on this).
  416.  
  417. Unique menu files for network users
  418. -----------------------------------
  419. Since we already have the "PCM" environment variable defined (see above), we
  420. can also use this to specify the name of the menu file (normally we won't want
  421. to do this, as users can share the menu files without any conflicts.) When we
  422. _do_ need to give them distinct menus, however, we can use this "PCM" variable.
  423. Let's say for example that user Bob needs a unique menu.  Our autoexec file for
  424. Bob might include these lines:
  425.  
  426.         ----------------
  427.         set PCM=BOB
  428.         pcmenu %PCM%.PCM
  429.         ----------------
  430.  
  431. The pcmenu.bat file would then be handed the filename "BOB.PCM" as the menu
  432. file to be used.  The users on the network could share sub-menus, such as a
  433. 'utilities menu', by having a 'Return to master menu' item defined in the
  434. shared sub-menu as follows:
  435.  
  436.         ------------------------
  437.         Return to master menu
  438.                 pcmenu %PCM%.PCM
  439.         ------------------------
  440.  
  441. By using this approach, each user would return to his or her own master menu
  442. when they were through sharing the common utilities menu.
  443.  
  444.  
  445. File sharing modes for networks
  446. -------------------------------
  447. Menu users hold the menu text file they're currently using open in a shared
  448. read-only mode.  This avoids problems caused by making a selection from a menu
  449. whose file has changed since the menu was displayed, as any attempt to modify
  450. the file will (or should) result in a sharing violation error.
  451.  
  452.  
  453. Name changes for Novell (tm) networks
  454. -------------------------------------
  455. The original versions of PCMENU used to use the name "MENU.BAT" instead of
  456. "PCMENU.BAT", but this caused a conflict with Novell systems which have their
  457. own MENU command.  Hence, the "PCMENU.COM" file also had to be renamed, and is
  458. now "PCMS.COM".
  459.  
  460.  
  461. COLORS and KEYBOARD LOCK STATE
  462. ==============================
  463. The system defaults to using the screen colors in effect when it's started, and
  464. creates a reverse video attribute by simply flipping the color bits.  The
  465. screen is cleared to the original colors on exit and when an item is chosen.
  466. The program also saves the original keyboard lock state (caps, num, etc.), then
  467. holds all of these OFF while it is running.  This makes it certain that the
  468. cursor arrow keys will always work, and prevents users from rebooting or
  469. hotkeying into most TSR's from within the menu.  The original keyboard locks
  470. are restored on exit and when any item is selected.
  471.  
  472. There are two options which will allow you to control the colors and keyboard
  473. state directly.  Including '.c=' immediately followed by a base 10 numeric
  474. value will set the menu colors to that value.  If you include 2 values
  475. seperated by a comma, you can set both the base color and the color to be used
  476. for the hilite selection bar.  Using '.k=0' will prevent PCMENU from restoring
  477. the original keyboard lock state on exit.  This is handy for dealing with IBM's
  478. latest little joke, which takes the form of forcing numlock on when booting.
  479. The '.k=0' option will ensure that the locks will all be off after using the
  480. menu.
  481.  
  482. For example, the following will set the screen colors to black on white reverse
  483. video and prevent the original keyboard lock state from being restored:
  484.  
  485. --------------------------------
  486. .c=112
  487. .k=0
  488. --------------------------------
  489.  
  490. The next example will set the colors to dim white (gray?), and use bright white
  491. for the selection bar.  Note that it won't actually be a 'bar' this way, merely
  492. a different color text.
  493.  
  494. --------------------------------
  495. .c=7,15
  496. --------------------------------
  497.  
  498. The programs "PCMCOLOR.COM" and "COLORS.COM" (with.doc files) are now included
  499. to assist you in selecting values to use with these '.c=' commands.  Just type
  500. 'COLORS' at the DOS prompt to see the values and the associated screen colors.
  501. The PCMCOLOR program will show you a menu and allow you to interactively set
  502. the colors with various of the cursor keys.
  503.  
  504.  
  505.  
  506. *****NOTES, and points to remember:
  507.  
  508. -You start the menu with the PCMENU command, and not by invoking PCMS.COM
  509. directly.
  510.  
  511. The various 'dot' commands don't really need to be at the top of the file, but
  512. putting them there will make the file much more legible.  The only one which
  513. remains location dependent is the default password (.p=) command, for obvious
  514. reasons.
  515.  
  516. -Spaces are NOT stripped off the passwords, so make certain you set these to
  517. exactly what you want them to be.
  518.  
  519. -You can include an 'Exit' option, as I did in the example file, by simply not
  520. following the item name with any commands.  This will cause an empty (0 byte)
  521. batch file to be written, and control will go to DOS.  You could also put
  522. something like "echo Use PCMENU command to re-start the menu" as the only
  523. command for the item.  The normal exit is to simply press the <ESC> key, unless
  524. this has been disabled with a '.e=0' command in your menu text file.
  525.  
  526. -You should run the MAKEMENU.COM program (described above) to create a
  527. customized PCMENU.BAT which will change to the proper drive and directory prior
  528. to executing PCMS.COM.  Installing the menu system in a directory which is in
  529. the path will allow users to restart the menu by simply typing "PCMENU" from
  530. anywhere in the system.
  531.  
  532. -I tried to make the movement of the highlite bar as intuitive as I could,
  533. allowing the up, down, right and left arrow keys to wrap in a way that seems
  534. logical.  Don't forget that pressing the first letter of the item name you want
  535. will take you directly to it.
  536.  
  537. -For people NOT on a Novell network and who have been using PCMENU for some
  538. time, you might want to create a little batch file called MENU.BAT which
  539. contains just the line
  540.  
  541.                 PCMENU %1
  542.  
  543. This will allow you to convert to the new version without having to train all
  544. of your users to type 'PCMENU' instead of 'MENU'!
  545.  
  546.  
  547.  
  548. SUMMARY OF SPECIAL OPTIONS:
  549. ===========================
  550.  
  551. *-------------*
  552. | Environment |
  553. *-------------*
  554. -Environment variable "PCM" can be used to name the output batch file to be
  555. created when selections are made (needed for network use), and can also be used
  556. in other ways such as to specify a unique menu file for each user.
  557.  
  558. *-----------------*
  559. | Command options |
  560. *-----------------*
  561. -A single '/' character as the last command for a given item will cause the
  562. batch file to be written with commands for re-starting the menu.
  563.  
  564. -A '<' character immediately followed by a filespec can be used as a command.
  565. It will load another menu text file directly into the menu system display.
  566. This is the fastest method of chaining multiple menus together, and a good way
  567. of bringing up quick sub-menus.
  568.  
  569. *----------------------*
  570. | Dot Command Settings |
  571. *----------------------*
  572. -Disable ESC key as exit key:   .e=0
  573.  
  574. -Administrator password:        .a=text
  575.  
  576. -Default Password:              .p=text
  577.  
  578. -Screen protection delay:       .s=n
  579.  
  580. -Use only legal BIOS video:     .b=1
  581.  
  582. -Leave keyboard locks off:      .k=0
  583.  
  584. -Title for menu:                .t=text
  585.  
  586. -Colors to be used:             .c=n   OR   .c=n1,n2
  587.  
  588. -Set item password:             item name,password
  589.  
  590.  
  591. NOTE that case is not significant:  '.P=' is the same as '.p=', so use
  592. whichever you find most legible.
  593.  
  594. NOTE also that the program PCM_CNV.COM is included to automatically convert
  595. your old format menu files into the new format.  The syntax is:
  596.  
  597.         PCM_CNV old_file new_file
  598.  
  599. Old_file is the existing old_format menu file, and new_file is the name of the
  600. new file to create.  Once you've verified it, kill the original and rename the
  601. new one.  I wrote this program because I felt guilty about making everyone
  602. rewrite all of their menu files.  One of those design decisions that should
  603. have been better thought-out before the first release!
  604.  
  605.  
  606.  
  607. SUMMARY OF KEY MAPPING:
  608. =======================
  609.  
  610. Action                          Key(s)
  611. ======                          ======
  612.  
  613. select highlited item           Enter
  614. ---
  615. exit                            ESCape key (if not disabled)
  616. ---
  617. move to specific item           first char of Item Name
  618. ---
  619. move down list                  Down Arrow
  620. move up list                    Up Arrow
  621. move right                      Right Arrow
  622. move left                       Left Arrow
  623. ---
  624. left of row                     Home
  625. right of row                    End
  626. top of column                   PgUp
  627. bottom of column                PgDn
  628.  
  629.  
  630.  
  631. TECHNICAL NOTES & MISCELLANY
  632. ============================
  633. You can skip this part if you aren't interested in the technical aspects of the
  634. system, but you may want to come back to it later - especially if you have any
  635. problems getting it running.
  636.  
  637. -PCMS.COM writes directly to the video screen buffer for increased display
  638. speed, uses many BIOS level calls, and directly manipulates data in the BIOS
  639. data segment.  Hence the need for PC/AT/PS2 compatibility.  A new option (as of
  640. the 2/19/89 release) allows forcing the system to write to the screen via legal
  641. BIOS routines, however, so this constraint is now lifted somewhat.
  642.  
  643. -The system holds all of the 'shift' keys (Shift, Ctrl, Alt, Scroll, Caps, and
  644. NumLock) in an OFF state while displaying a menu, then restores them to their
  645. previous setting on exit.  This has a number of advantages for this
  646. application:
  647.  
  648.     -no need for keyboard interrupt handler (hence smaller code size).
  649.     -no need for Ctrl-Break interrupt handler (smaller code).
  650.     -no need for case converions on password testing (smaller code).
  651.     -most TSR's cannot be invoked from menu (more security).
  652.     -cannot reboot via Ctrl-Alt-Del (more security).
  653.     -arrow keys will always work (NumLock cannot accidently be set).
  654.  
  655.  
  656. -I'm not sure at what point DOS gained the ability to reference environment
  657. variables in batch files by enclosing them in '%' signs.  If this is reported
  658. by your version of DOS as an error, simply remove the offending line from the
  659. PCMENU.BAT file.  It's only there for network support, and people using old
  660. versions of DOS aren't likely to be on a network.  NOTE however that if you do
  661. remove this line, you WON'T be able to set the name of the output file by using
  662. the "PCM" environment variable.
  663.  
  664. -MAKEMENU.COM is a simple little program which does the following.  1) It
  665. checks the DOS version number to see if the "@echo off" command is supported.
  666. If it's DOS version 3.30 or higher, it includes the '@' sign, otherwise it
  667. suppresses it.  2) It checks the logged drive and directory, and inserts
  668. commands to automatically change to these prior to running the menu. 3) It
  669. dumps out the remainder of the text for the batch file, verbatim.
  670.  
  671. -PCMCOLOR.COM is a trivial program which displays a phony menu and allows you
  672. to experiment with different color combinations.  It will show you the ".c="
  673. command needed to reproduce the combination shown.
  674.  
  675. -COLORS.COM is an even more trivial program, which simply displays all of the
  676. colors produced by each of the 256 possible values.  It will default to
  677. displaying these in base 10, which is what the menu system requires when using
  678. the '.c=n' and '.c=n1,n2' commands.
  679.  
  680. -PCMS.COM returns 'errorlevel' codes to DOS, which are used by the PCMENU.BAT
  681. file to determine what action it should take upon regaining control.  The
  682. normal return code is 255, which means that the user selected an item and that
  683. the batch file needed to run the item was created successfully.  The name of
  684. this batch file will be either the contents of the PCM environment variable
  685. with ".BAT" added as an extent, or "PCM_EXEC.BAT", which is the default.
  686. PCMENU.BAT issues both commands, starting with the environment variable name.
  687. If this variable is set, then control will not return to PCMENU.BAT and the
  688. other command will never be executed.  If it isn't set, the PCM_EXEC.BAT file
  689. will be executed instead.
  690.  
  691. -PCMS.COM returns a 0 value if the user hit the Escape key to exit the menu,
  692. and this tells PCMENU.BAT that it shouldn't execute the batch file this time.
  693. Any other value (besides the normal 255) indicates that an error occurred, and
  694. PCMENU.BAT then branches to it's simplistic error reporting section.  I kept
  695. this small, knowing how slow batch files are - and figuring that the three
  696. errors covered would be enough to diagnose most any problem likely to occur.
  697.  
  698. -PCMS.COM opens the menu text files in read-only mode, and keeps the file open.
  699. This has the virtue of preventing anyone else from accessing the file in a
  700. 'write' mode while the system is in use.  Hence, the menu text files can only
  701. be modified when no users are accessing them.
  702.  
  703. -"NOVELL", "DESQVIEW" and "WINDOWS" are registered trademarks of their
  704. respective vendors.
  705.  
  706. -We suspended our 'Aphrodesiac Research' program years ago (as soon as we found
  707. one that worked).
  708.  
  709.  
  710.  
  711. SOURCE CODE AVAILABILITY
  712. ========================
  713. The full source code (Turbo-C version 2.0 and Turbo Assembler version 1.0) is
  714. now available for $5.00.  This includes the source for _all_ of the programs,
  715. including the little utilities, together with the makefiles, etc.
  716.  
  717. If you would like this source code, please send a formatted diskette, stamped
  718. self-addressed mailer, and $5.00 to:
  719.  
  720.         Bob Trevithick
  721.         409 Woodhill Apts.
  722.         Newark, New York   14513
  723.  
  724.  
  725.  
  726. -------------------------------------------------------------------------
  727. Bob Trevithick
  728. Daytime Voice:  (315) 331-1700
  729. GEnie address:  R.TREVITHICK
  730. -------------------------------------------------------------------------
  731. Rick Kiss
  732. Daytime Voice:  (518) 370-7529
  733. GEnie address:  R.W.KISS
  734. -------------------------------------------------------------------------
  735.  
  736.